package com.xiyuan.Entity2Json;

import com.alibaba.fastjson2.JSONObject;
import com.xiyuan.Entity2Json.bean.JsonResult;

import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
import java.util.Date;
import java.util.LinkedHashMap;
import java.util.Random;

import static com.xiyuan.util.RandomUtil.getRandomLong;

public abstract class AbstractEntity2JsonStrategy {
    protected static JSONObject jsonObject = new JSONObject(new LinkedHashMap());
    protected static JsonResult jsonResult = new JsonResult();




    public abstract JsonResult toJsonString(Class<?> clazz) ;


    /**
     * 设置Object里面的值
     */
    public static void setValue(JSONObject o, Field field) {
        // 设置可访问性
        field.setAccessible(true);
        //静态字段不生成json
        if (Modifier.isStatic(field.getModifiers())) {
            System.out.println(field.getName() + " : is static variable ");
            return;
        }

        //按照类型设置里面的值
        if (field.getType() == Integer.class) {
            o.put(field.getName(), new Random().nextInt(50));
        } else if (field.getType() == Date.class) {
            o.put(field.getName(), new Date(System.currentTimeMillis() + getRandomLong()));
        } else {
            String name = field.getName();
            //这里采用toLowerCase是为了忽略大小写问题
            if (name.toLowerCase().contains("id")) {
                o.put(field.getName(), getRandomLong().toString());
            } else if (name.toLowerCase().contains("name")) {
                o.put(field.getName(), "cdc");
            } else {
                o.put(field.getName(), "test");
            }
        }
    }
}
